package com.jiuqi.mobile.core.service.base; import java.io.File; import java.lang.reflect.Proxy; import java.rmi.AlreadyBoundException; import java.rmi.Remote; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.RemoteObject; import java.rmi.server.UnicastRemoteObject; import com.jiuqi.mobile.core.service.base.test.LogProxy; import com.jiuqi.mobile.core.service.base.test.PerformanceProxy; import com.jiuqi.mobile.core.service.base.test.SmallWorld; public class TestService { @SuppressWarnings("unchecked") public static void main(String[] args) throws RemoteException, AlreadyBoundException { // ITest i=(ITest)UnicastRemoteObject.exportObject(new TestImpl(),0); // Registry registry = LocateRegistry.createRegistry(9700); // registry.bind("test", i); // ManagerFactory mf = // ManagerFactory.getInstance(TestManagerInvocationHandler.class); // ITest test = mf.instance(ITest.class); // User l = test.login("name", "password"); // System.out.println(l); test3(); } // private static void test1() throws RemoteException, AlreadyBoundException { // ManagerFactory.setRemoteInvocation(TestManagerInvocationHandler.class); // ManagerRemoteService mr = ManagerRemoteService.getInstance(9700); // mr.addRemote(ITest.class); // mr.start(); // } // // private static void test2() throws RemoteException, AlreadyBoundException { // Class<? extends ManagerInvocationHandler> remoteInvocation = TestManagerInvocationHandler.class; // // if(null == remoteInvocation) throw new // // RemoteException("没有找到Remote Invocation Handler"); // Registry registry = LocateRegistry.createRegistry(9700); // // // Class<ITest> rm = ITest.class; // ITest instance = ManagerFactory.getInstance(remoteInvocation).instance( // rm); // instance = (ITest) Proxy.newProxyInstance(instance.getClass() // .getClassLoader(), new Class<?>[] { ITest.class }, // new PerformanceProxy(instance)); // UnicastRemoteObject.exportObject(instance); // registry.bind(rm.getName(), instance); // } static void test3() { try { // Create remote object // ClassLoader cl = new // DynamicClassLoader2(Thread.currentThread().getContextClassLoader()); // new // File("src/test/java").toURL() }); DynamicClassLoader cl = new DynamicClassLoader(new File("F:\\Users\\Modi\\workspace\\jiuqi\\mobile\\manager\\core\\target\\test-classes\\com\\jiuqi\\mobile\\core\\base\\test").toURL()); // Remote server = new SmallWorldImpl(); Remote server = (Remote) cl.findClass("SmallWorldImpl").newInstance(); // (Remote) cl.loadClass("SmallWorldImpl").newInstance(); // it should be DynamicRemoteStub System.out.println("StubObject is: " + RemoteObject.toStub((RemoteObject) server).getClass()); // add log proxy to the remote object server = (Remote) Proxy.newProxyInstance(server.getClass() .getClassLoader(), new Class[] { SmallWorld.class }, new LogProxy(server)); // add performance proxy to the remote object server = (Remote) Proxy.newProxyInstance(server.getClass() .getClassLoader(), new Class[] { SmallWorld.class }, new PerformanceProxy(server)); UnicastRemoteObject.exportObject(server); // UnicastServerRef ref = new UnicastServerRef(true); // DynamicRemoteStub stub1 = new DynamicRemoteStub(ref); // DynamicStubHandler handler = new DynamicStubHandler(); // handler.setProxy(stub1); // ref.exportObject(server, null, true); Registry reg = LocateRegistry.createRegistry(1099); reg.bind(SmallWorld.NAME, server); } catch (Exception e) { e.printStackTrace(); } } }